[レポート] Amazon OpenSearch Services を使ったマルチモーダル RAG の構築を体験できる「Vector search with Amazon OpenSearch Service」に参加しました #AWSreinvent #ANT401
リテールアプリ共創部の中野です。
re:Invent 2024 で開催された 「Vector search with Amazon OpenSearch Service」 というセッションについてレポートします。
セッション概要
概要(re:Invent 2024 イベントサイトより抜粋)
With Amazon OpenSearch Service vector database capabilities, you can implement Retrieval Augmented Generation (RAG) with large language models (LLMs). Join this session to build a RAG-based, contextually-aware, conversational search solution using OpenSearch vector database for document embedding and LLM content generation with context. You must bring your laptop to participate.
タイトル
ANT401 | Vector search with Amazon OpenSearch Service
スピーカー
Srinivas Margasahayam
Varun Rao Bhamidimarri
Sohaib Katariwala
Bobby Mohammed
Gene Alpert
セッションタイプ
Builders' session
LEVEL
400 – Expert
セッションレポート
最終的に OpenSearch を使ったマルチモーダル RAG を、以下のようなアーキテクチャで構築することが目標でした。
最初に検索テクニックについて説明があり、検索には完全一致、ベクトル検索(意味検索)、語彙検索、マルチモデル検索、会話検索の 5 種類があるとのことです。
完全一致は文字通りの単語マッチング、ベクトル検索は単語の意味を考慮しています。
語彙検索は単語のバリエーションに焦点、マルチモデル検索は音声・動画・テキストなど様々なデータ入力を組み合わせています。
今回はこの検索について、OpenSearch と他サービスの接続確立、データ取り込み、検索パイプラインの適用について理解するために、ワークショップでこれらのステップを詳しく説明しながら手を動かして概要を掴むという内容でした。
一番最初に以下の 2 つの Bedrock のモデルへのアクセスが必要でしたので、アクセス設定をおこないました。
OpenSearch の取り込み設定をおこなうための手順を JupyterLab で設定していきます。
Amazon OpenSearch Service と Amazon Bedrock の Python クライアントと、マルチモーダル埋め込みを生成するための OpenSearch ML Client ライブラリを使いました。
Amazon Titan Multimodal Embeddings G1 モデルへの OpenSearch Service ML コネクタの作成、登録、デプロイをしました。
ML Connect は、Amazon SageMaker や Bedrock のモデルなどの接続するためのコネクタです。これにより、OpenSearch 内で予測やデータ処理を行うことができます。
Amazon Bedrock Titan Multimodal モデルを使用して、テキストと画像のデータを組み合わせてベクトル変換を行うパイプラインを作成しました。
このパイプラインは OpenSearch の機能を使用し、データを取り込む際に自動的に処理を実行します。
具体的には、製品の説明文(product_description)と画像データ(image_binary)を入力として受け取り、これらをベクトル形式に変換して「vector_embedding」というフィールドに保存します。この処理により、テキストと画像の両方の特徴を考慮した検索ができるようです。
インデックスにはチャンクを使って登録をおこなっているようでした。
最後に、マルチモーダル検索を実行します。
LLM プロンプトを補強するために、知識データベースとして OpenSearch Service を使用します。
Claude を基礎のモデルとして使い、OpenSearch Service に保存されている利用可能な小売アイテムに基づいて、回答を生成し、エンドユーザーにファッションアドバイスを提供します。
設定が終わると、会話型検索を Python のコードを使って実行します。
最終的に小売の情報がレスポンスされました。
さいごに
以上、「Vector search with Amazon OpenSearch Service」 というセッションのレポートでした。
OpenSearch を使ったベクトル検索の実装の流れが理解しやすく、実際に今度は自分で手を動かしながらコードも書いて実装を進めたいと思いました。
実装を始める前のイメージを掴むにはちょうどよいセッションでした。
日本に帰国してからベクトル検索についての試したブログを是非書いてみたいと思います。
この記事がどなたかの参考になれば幸いです。